www.gusucode.com > XbPhp开发框架 v1.4.5PHP源码程序 > XbPhp开发框架 v1.4.5/xbphp/xbphp/home/controller/IndexController.php
<?php /** * XbPhp控制器实例 * 有问题或有建议可以加此群:114252528,底下代码只是测试案例。。。可以作为参考,在使用 * 结合了cakephp与thinkphp的写法 * 防注入写法请自行过滤 * 查看源代码地址: https://github.com/mcxiaobo1314/xbphp * @author wave */ class IndexController extends AppController{ /** * 加载模型 示例:BcWz则会自动转换成bc_wz 这个可以一次引入多个模型,是第一次加载全部模型 * 加载组件:去AppController.php里面进行加载,如果单独在某个控制器加载组件会覆盖AppController * 里面公用加载组件 */ public $uses = array('BcWz','BcTest','BcNav'); //要自动初始化函数,必须在构造函数里面写上parent::__construct()先初始化父类 public function _initialize() { parent::_initialize(); } public function test($id = null,$uid = null) { //控制器里面的公有方法可以互相访问;访问other控制器里面的aaa方法 // $a = $this->requestAction('/other/aaa'); // var_dump($a); //執行原生SQL語句寫法 //$data = Model::execute('select * from config'); //var_dump($data); //获取框架占用的内存 //echo Xbphp::memory(Xbphp::endMemory()); //需要统一控制,可以自己定义一个全局变量来控制 //Xbphp::toUrl('写要访问的URL','1是动态,2是伪静态','要定义的键名') //该例子演示动态URL转换伪静态 //Xbphp::toUrl('?m=Index&a=test&a=aaa&c=dddd',2,array('2'=>'cid','3'=>'did')); //该例子演示了伪静态转换成动态URL //Xbphp::toUrl('/Index/test/aaa/dddd/',1,array('2'=>'cid','3'=>'did')); //调用phprpc,需要先加载组件,使用的是phprpc3.0.1 版本 //服务端调用底下示例: // $server = $this->Rpc->server(); // var_dump($server); //客户端调用底下示例: // $client = $this->Rpc->client('http://127.0.0.1/xbphp/Index/test'); // var_dump($client); //表单数据校验,对应的模型里面写校验规则,详情请看BcWzModel.php // $_POST['id'] = 'aaaa'; // if(!$this->BcWz->validate()){ // var_dump($this->BcWz->error); // } //这个还是有问题 // $this->BcWz->test(); //加载模型也可以自己手动加载 //这种是以首字母大写方式去加载 BcWz自动转化成bc_wz //$this->loadModel('BcWz'); //这种是以把表前缀和表名进行分开方式进行加载 //$this->loadModel('wz','bc_'); //加载模型还有第三个参数,就是选择连接数据库 //$this->loadModel('BcWz','',config::$default); 或 $this->loadModel('wz','bc_',config::$default); //执行SQL语句的是 加载模型的第一个参数 //$this->loadModel('第一个参数'); //$this->加载模型第一个参数->find(); //字段默認是查詢全部 // $fields = array('BcWz.bc_id','BcWz.bc_title'); //联表查询 // $joins = array( // array( // 'type' => 'left', // 'table' => 'bc_test', // 'fileds' => '`BcTest`.`bc_id`', // 'alias' => 'BcTest', // 'where' => 'BcTest.id =BcWz.bc_id' // ) // ); //条件 // $where['BcWz.bc_id >='] = 4; //分组 // $group = array('BcWz.bc_id'); //执行查询语句 // $data = $this->BcWz // ->where($where) // ->limit(array(1,2)) // ->field($fields) // ->joins($joins) // ->group($group) // ->order('bc_wz.bc_id asc') // ->find(); // var_dump($data); /** * 支持PDO的原生态的预处理命令(必须要修改配置把默认设置2为PDO) */ // $bc_name = 'aaaas'; // $bc_fid = '1'; // $bind = $this->BcNav->prepares("INSERT INTO `%table%` ( `bc_name`,`bc_fid`) VALUES (:bc_name,:bc_fid)"); // $bind->bindParam(':bc_name',$bc_name); // $bind->bindParam(':bc_fid',$bc_fid); // $bind->execute(); //查詢但行數據 //$this->BcWz->first(); //更新语句 //$this->BcWz->where($where)->save($_data); /** * 批量更新数据 */ // $data = array( // array( // 'key' => 'bc_navid', // 'where' => 'bc_id = 3 and bc_title = "usleep"', // 'value' => '2' // ), // array( // 'key' => 'bc_navid', // 'where' => 'bc_id = 4 and bc_title = "unpack"', // 'value' => '2' // ), // array( // 'key' => 'bc_jianjie', // 'where' => 'bc_id = 5 and bc_title = "foreach"', // 'value' => '2222' // ) // ); // $this->BcWz->saveAll($data); //插入语句 // $_data['bc_title'] = 1; // $_data['bc_connect'] = 1; // $_data['bc_jianjie'] = 1; // $_data['bc_navid'] = 1; // if($this->BcWz->save($_data)) { // echo '插入成功<br>'; // } //事务提交 //开启事务 // $this->BcWz->begin(); // $status = 1; // $_data['bc_title'] = 1; // $_data['bc_connect'] = 1; // $_data['bc_jianjie'] = 1; // $_data['bc_navid'] = 1; // if(!$this->BcWz->save($_data)) { // $status = 0; // } // if($status) { //事务提交 // $this->BcWz->commit(); // echo '成功<br>'; // }else { //事务回滚 // $this->BcWz->rollback(); // echo '失败<br>'; // } //删除语句 // if($this->BcWz->where('bc_id = 585')->delete()) { // echo "删除成功"; // } //获取表的主键 //$this->BcWz->getPk(); //执行原先SQL语句 //$this->BcWz->query('select * from bc_wz'); //必须要在加载Mail的组件,加载组件在AppController.php里面 //目前经过测试只能用163邮箱,无法使用QQ邮箱 // $mail_status = $this->Mail->mail_send( // array( // 'address' => "smtp.163.com", //邮箱SMTP的地址 // 'port' => 25, //邮箱SMTP的端口号 // 'cc' => "****", //定义的名字 // 'form' => "****@163.com", //邮箱帐号 // 'pass' => "*****", //邮箱密码 // "to" => "*****@qq.com", //要发送给他人的邮箱 // "title" => "测试XbPHP", // 标题 // "body" => "XbPHP框架,小波交流群:114252528" //内容 // ) // ); // var_dump($mail_status); //邮箱发送成功返回OK 失败返回报错信息 //smarty模版引擎视图 配置找smarty配置的方式 //$this->view->smarty->参数 = '配置的信息'; // $this->view->smarty->assign('abc',1111); // $this->view->smarty->display('test.html'); //这是系统自带的模版引擎视图 // $this->view->assign('a',1); // $this->view->assign('b',2); // $varr = array('a'=>array('b'=>'ccc','c'=>'ddd')); // $this->view->assign('varr',$varr); // $earr = array('0'=>array('a'=>'测试1','b'=>'测试二')); // $this->view->assign('earr',$earr); // $arr = array('av'=>'abc2','bv'=>'edc3'); // $root = array('root'=>XB_ROOT.'/view'); // $this->view->assign('rootarr',$root); // $this->view->assign('arr',$arr); /* *防止路径报错 * 定义公用常量到defined.php */ // $this->view->assign('root',XB_ROOT.'/view'); // $this->view->assign('aroot',''); //可以写成$this->view->display(加文件名不要加后缀); //如:$this->view->display('index'); //修改模版的文件的后缀(自带的模版引擎) //$this->view->suffix = '.html'; //echo $this->view->compile_time; //获取文件代码 //echo $this->view->renderHtml(array(),'header'); //无编译进行渲染模版模版里面就写echo $a // $this->view->render('',array( // 'a' => 'cccc' // )); //這個是layout引入模版,可以让头部和底部公用 //$this->view->renderLayout(array('a'=>"aaa"),'1.php'); echo "欢迎使用xbphp"; //引入文件,以绝对路径的方式引入 //第一个参数文件名,第二个参数文件的路径 //load('tet.php','/aaa/bbb'); //加载只能加载实例模型 //第一個參數表名,第二參數前綴,第三的連接數據 // $wz = loadModel('BcWz'); // $wz->find(); //调用testModel公用方法 // $this->loadModel('wz'); // $this->wz->test(); //写入Cookie //$this->Cookie->write('a','b'); //读取cookie //echo $this->Cookie->read('a'); //删除Cookie //$this->Cookie->delete('a'); //写入 //$this->Session->write('a','b'); //读取 //$this->Session->read('a'); //删除 //$this->Session->delete('a'); //毁掉Session //$this->Session->destroy(); //获取当前Session的ID //$this->Session->id(); //可以接收POST的请求 //dump($this->request->data); //输出 //dump(array('1','2')); //调用AppController公用方法 任何控制器必须继承AppController都能调用 //dump($this->add(1,5)); //调用公AppModel方法,只要实例化的Model都能调用 //$this->wz->sum(1,5); //打印当前访问的控制器 //dump($this->request->controller); //打印当前访问的方法 //dump($this->request->action); //判断请求,参数只能写post get ajax //$this->is('get'); //设置缓存文件的目录 //Cache::path('linshi'); /* *第一个参数是缓存文件的名字,第二个参数是回调函数必须有返回值,第三个是傳入参数,第三个是缓存文件的生存时间 */ // Cache::wirte('aa',function($model){ // return $model; // },$this,100); //读取缓存文件 //dump(Cache::read('aa')); //删除缓存文件 //Cache::del('aa'); /*Socket使用方式*/ //要连接的地址 //Socket::$address = "127.0.0.1"; //要连接的端口 //Socket::$port = 80; //要发送数据 //Socket::$data = "hello XbPhp"; //Socket::send(); //读取返回的数据 //Socket::read(); //关闭连接 //Socket::colse(); } }